<?php

/*
 * 
 * @Autor: Andrés Ubilla.
 */

class Ajax extends TPage {

    public function onLoad($param) {
        parent::onLoad($param);

        if (!$this->IsPostBack) {
            $html = "";
            $op = $this->Request["op"];

            switch ($op) {
                case "loginUsuario":
                    $html = $this->loginUsuario();
                    break;
                case "publicarComentario":
                    $html = $this->publicarComentario();
                    break;
                case "comentariosPorEscort":
                    $html = $this->comentariosPorEscort();
                    break;
                case "obtenerComentarios":
                    $html = $this->obtenerComentarios();
                    break;
                case "obtenerRelatosPorEscort":
                    $html = $this->obtenerRelatosPorEscort();
                    break;
                case "obtenerEntrevistas":
                    $html = $this->obtenerEntrevistas();
                    break;
                case "obtenerNoticias":
                    $html = $this->obtenerNoticias();
                    break;
                case "obtenerConcursos":
                    $html = $this->obtenerConcursos();
                    break;
                default:
                    break;
            }
            echo rtrim($html);
        }
    }

    private function loginUsuario() {
        $oUsuario = new Usuario();
        $oUsuarioBLL = new UsuarioBLL();
        $usuario = $this->Request["usuario"];
        $password = $this->Request["password"];
        $oUsuario->setEmail($usuario);
        $oUsuario->setPassword($password);
        $mensaje = $oUsuarioBLL->validarLogin($oUsuario);
        $page = $this->Request["page"];
        $query = $this->Request["a"];

        if ($mensaje == "OK") {
            $oUsuarioValido = Util::getSession("USUARIO");
            if ($oUsuarioValido->getIdTipoUsuario() == Tipo_usuario::ADMINISTRADOR) {
                $this->Response->Redirect("index.php?page=Index.Dashboard");
            } else {
                $this->Response->Redirect("index.php?page=" . $page . "&a=" . $query);
            }
        } else {
            $resultado = array("ok" => 0);
            return json_encode($resultado);
        }
    }

    private function publicarComentario() {
        $oComentario = new Comentario();
        $oUsuario = Util::getSession("USUARIO");
        if (Util::isNullOrEmpty($oUsuario)) {
            return "Err";
        } else {
            $mensaje = $this->Request["txtComentario"];
            $oComentario->setMensaje(utf8_decode($mensaje));
            $oComentario->setIdUsuarioOrigen($oUsuario->getId());
            $oComentario->setIdEstado(Estado::HABILITADO);
            $oComentario->setIdTipoComentario($this->Request["txtTipoComentario"]);
            $oComentario->setIdRegistro($this->Request["txtIdRegistro"]);
            $oComentarioBLL = new ComentarioBLL();
            $id = $oComentarioBLL->grabar($oComentario);
            if (is_numeric($id)) {
                $pagina = $this->Request["pagina"];
                SendMail::correoNuevoComentario($pagina, $oUsuario->getId(), $mensaje);
                return "OK";
            } else {
                return "Err";
            }
        }
    }

    private function comentariosPorEscort() {
        $idEscort = $this->Request["idEscort"];
        $numeroPagina = $this->Request["numeroPagina"];
        $oComentarioBLL = new ComentarioBLL();
        $oComentario = new Comentario();
        $oComentario->setIdRegistro($idEscort);
        $oComentario->setIdTipoComentario(Tipo_comentario::ESCORT);
        $tamannoPagina = Util::CANTIDAD_REGISTROS_POR_PAGINA;
        $inicio = ($numeroPagina - 1) * $tamannoPagina;
        $arr = $oComentarioBLL->listarPorEscort($oComentario, $inicio, $tamannoPagina);

        $cantidadComentarios = count($arr);

        $template = "<li class='{#CLASE}'>
                        <img src='{#IMG_PERFIL}' width='100' heigth='100' />
                        <div class='content'>
                            <div class='fechaComentario'><h5><a href='#'>{#USER}</a></h5><span> | <i class='icon-calendar icon-white'></i> publicado hace {#TIEMPO}</span></div>
                            <p>{#COMENTARIO}</p>
                        </div>
                    </li>";
        $templateAux = "";
        $i = 1;
        $html = "";
        foreach ($arr as $oComentario) {
            $templateAux = $template;
            $path = "./themes/user/images/avatar/";
            $templateAux = str_replace("{#IMG_PERFIL}", $path . $oComentario->getRutaAvatar(), $templateAux);
            $mensaje = Util::reemplazarTextoPorEmoticon($oComentario->getMensaje());
            $templateAux = str_replace("{#COMENTARIO}", $mensaje, $templateAux);
            $templateAux = str_replace("{#USER}", $oComentario->getUsuario(), $templateAux);
            $templateAux = str_replace("{#TIEMPO}", Util::nicetime($oComentario->getFecha()), $templateAux);

            $clase = "impar";
            if ($i % 2 == 0) {
                $clase = "par";
            }
            $templateAux = str_replace("{#CLASE}", $clase, $templateAux);
            $i++;
            $html .= $templateAux;
        }

        $numeroPagina++;
        $arrResultado = array("status" => "OK",
            "comentarios" => utf8_encode($html),
            "cantidadComentario" => $cantidadComentarios,
            "numeroPagina" => $numeroPagina);
        $arrResultado = json_encode($arrResultado);
        return $arrResultado;
    }

    private function obtenerRelatosPorEscort() {
        $idEscort = $this->Request["idEscort"];
        $numeroPagina = $this->Request["numeroPagina"];

        $tamannoPagina = Util::CANTIDAD_REGISTROS_POR_PAGINA;
        $inicio = ($numeroPagina - 1) * $tamannoPagina;
        $cantidadActual = $numeroPagina * $tamannoPagina;

        $oRelatoBLL = new Relato_escortBLL();
        if ($idEscort == "-1") {
            $totalRegistros = count($oRelatoBLL->listarUltimas());
            $arr = $oRelatoBLL->listarUltimasPaginacion($inicio, $tamannoPagina);
        } else {
            $totalRegistros = count($oRelatoBLL->listarPorEscort($idEscort));
            $arr = $oRelatoBLL->listarPorEscortPaginacion($idEscort, $inicio, $tamannoPagina);
        }
        $template = "<li class='impar'>
                    <a href='index.php?page=Index.ViewUsuario&a={#ARG_PERFIL}'><img src='{#IMG}' width=100 hegth=100 /></a>
                    <div class='content'>
                        <div class='fechaComentario'><h5><a href='index.php?page=Index.Relato&a={#ARG}'>{#TITULO}</a></h5><span> | <i class='icon-calendar icon-white'></i> {#FECHA}</span></div>
                        <p>{#MENSAJE}</p>
                    </div>
                </li>";
        $templateAux = "";
        $html = "";
        $path = "./themes/user/images/recurso_escort/imagen/perfil/thumbs/";
        if (count($arr) > 0) {
            foreach ($arr as $oRelato) {
                $templateAux = $template;
                $templateAux = str_replace("{#ARG_PERFIL}", Util::encriptarUrl(array("id" => $oRelato->getIdUsuario())), $templateAux);
                $templateAux = str_replace("{#IMG}", $path . $oRelato->getImgRelato(), $templateAux);
                $templateAux = str_replace("{#FECHA}", Util::nicetime($oRelato->getFecha()), $templateAux);
                $templateAux = str_replace("{#TITULO}", $oRelato->getTitulo(), $templateAux);

                $mensaje = $oRelato->getMensaje();
                if (strlen($mensaje) > 260) {
                    $mensaje = str_replace("<br>", "", $mensaje);
                    $mensaje = substr($mensaje, 0, 260);
                }
                $mensaje = Util::reemplazarTextoPorEmoticon($mensaje);
                $templateAux = str_replace("{#MENSAJE}", $mensaje, $templateAux);
                $templateAux = str_replace("{#ARG}", Util::encriptarUrl(array("id" => $oRelato->getId())), $templateAux);

                $html .= $templateAux;
            }
        }
        $numeroPagina++;
        $arrResultado = array("status" => "OK",
            "relatos" => utf8_encode($html),
            "numeroPagina" => $numeroPagina,
            "cantidadActual" => $cantidadActual,
            "totalRegistros" => $totalRegistros);
        $arrResultado = json_encode($arrResultado);
        return $arrResultado;
    }

    private function obtenerComentarios() {
        $id = $this->Request["id"];
        $numeroPagina = $this->Request["numeroPagina"];
        $tipo = $this->Request["tipo"];
        $oComentarioBLL = new ComentarioBLL();
        $oComentario = new Comentario();
        $oComentario->setIdRegistro($id);
        $oComentario->setIdTipoComentario($tipo);
        $tamannoPagina = Util::CANTIDAD_REGISTROS_POR_PAGINA;
        $inicio = ($numeroPagina - 1) * $tamannoPagina;
        $cantidadActual = $numeroPagina * $tamannoPagina;
        $arr = $oComentarioBLL->listarComentarios($oComentario, $inicio, $tamannoPagina);
        $totalRegistros = count($oComentarioBLL->listarComentarios($oComentario, 0, 50));

        $cantidadComentarios = count($arr);

        $template = "<li class='{#CLASE}'>
                        <img src='{#IMG_PERFIL}' width='100' heigth='100' />
                        <div class='content'>
                            <div class='fechaComentario'><h5><a href='#'>{#USER}</a></h5><span> | <i class='icon-calendar icon-white'></i> publicado hace {#TIEMPO}</span></div>
                            <p>{#COMENTARIO}</p>
                        </div>
                    </li>";
        $templateAux = "";
        $i = 1;
        $html = "";
        foreach ($arr as $oComentario) {
            $templateAux = $template;
            $path = "./themes/user/images/avatar/";
            $templateAux = str_replace("{#IMG_PERFIL}", $path . $oComentario->getRutaAvatar(), $templateAux);
            $mensaje = Util::reemplazarTextoPorEmoticon($oComentario->getMensaje());
            $templateAux = str_replace("{#COMENTARIO}", $mensaje, $templateAux);
            $templateAux = str_replace("{#USER}", $oComentario->getUsuario(), $templateAux);
            $templateAux = str_replace("{#TIEMPO}", Util::nicetime($oComentario->getFecha()), $templateAux);

            $clase = "impar";
            if ($i % 2 == 0) {
                $clase = "par";
            }
            $templateAux = str_replace("{#CLASE}", $clase, $templateAux);
            $i++;
            $html .= $templateAux;
        }

        $numeroPagina++;
        $arrResultado = array("status" => "OK",
            "comentarios" => utf8_encode($html),
            "cantidadComentario" => $cantidadComentarios,
            "numeroPagina" => $numeroPagina,
            "cantidadActual" => $cantidadActual,
            "totalRegistros" => $totalRegistros);
        $arrResultado = json_encode($arrResultado);
        return $arrResultado;
    }
    
    private function obtenerEntrevistas() {
        $idEscort = $this->Request["idEscort"];
        $numeroPagina = $this->Request["numeroPagina"];

        $tamannoPagina = Util::CANTIDAD_REGISTROS_POR_PAGINA;
        $inicio = ($numeroPagina - 1) * $tamannoPagina;

        $oEntrevistaBLL = new Entrevista_escortBLL();
        if ($idEscort == "-1") {
            $arr = $oEntrevistaBLL->listarUltimasPaginacion($inicio, $tamannoPagina);
        } else {
            $arr = $oEntrevistaBLL->listarPorEscortPaginacion($idEscort, $inicio, $tamannoPagina);
        }
        $cantidadComentarios = count($arr);
        $template = "<li class='impar'>
                    <a href='index.php?page=Index.ViewUsuario&a={#ARG_PERFIL}'><img src='{#IMG}' width=100 hegth=100 /></a>
                    <div class='content'>
                        <div class='fechaComentario'><h5><a href='index.php?page=Index.Entrevista&a={#ARG}'>{#TITULO}</a></h5><span> | <i class='icon-calendar icon-white'></i> {#FECHA}</span></div>
                        <p>{#MENSAJE}</p>
                    </div>
                </li>";
        $templateAux = "";
        $html = "";
        $path = "./themes/user/images/recurso_escort/imagen/perfil/thumbs/";
        if (count($arr) > 0) {
            foreach ($arr as $oEntrevista) {
                $templateAux = $template;
                $templateAux = str_replace("{#ARG_PERFIL}", Util::encriptarUrl(array("id" => $oEntrevista->getIdUsuario())), $templateAux);
                $templateAux = str_replace("{#IMG}", $path . $oEntrevista->getImgEntrevista(), $templateAux);
                $templateAux = str_replace("{#FECHA}", Util::nicetime($oEntrevista->getFecha()), $templateAux);
                $templateAux = str_replace("{#TITULO}", $oEntrevista->getTitulo(), $templateAux);

                $mensaje = $oEntrevista->getMensaje();
                if (strlen($mensaje) > 260) {
                    $mensaje = Util::recortarTexto(strip_tags($mensaje), 260);
                }
                $mensaje = Util::reemplazarTextoPorEmoticon($mensaje);
                $templateAux = str_replace("{#MENSAJE}", $mensaje, $templateAux);
                $templateAux = str_replace("{#ARG}", Util::encriptarUrl(array("id" => $oEntrevista->getId())), $templateAux);

                $html .= $templateAux;
            }
        }
        
        $numeroPagina++;
        $arrResultado = array("status" => "OK",
            "entrevistas" => utf8_encode($html),
            "cantidadComentario" => $cantidadComentarios,
            "numeroPagina" => $numeroPagina);
        $arrResultado = json_encode($arrResultado);
        return $arrResultado;
    }
    
    private function obtenerNoticias() {
        $numeroPagina = $this->Request["numeroPagina"];

        $tamannoPagina = Util::CANTIDAD_REGISTROS_POR_PAGINA;
        $inicio = ($numeroPagina - 1) * $tamannoPagina;

        $oNoticiaBLL = new NoticiaBLL();
        $arr = $oNoticiaBLL->listarUltimasPaginacion($inicio, $tamannoPagina);
        $cantidadComentarios = count($arr);
        $template = "<li class='impar'>
                    <a href='index.php?page=Index.ViewUsuario&a={#ARG_PERFIL}'><img src='{#IMG}' width=100 hegth=100 /></a>
                    <div class='content'>
                        <div class='fechaComentario'><h5><a href='index.php?page=Index.Noticia&a={#ARG}'>{#TITULO}</a></h5><span> | <i class='icon-calendar icon-white'></i> {#FECHA}</span></div>
                        <p style='text-align: justify;'>{#MENSAJE}...</p>
                    </div>
                </li>";
        $templateAux = "";
        $html = "";
        $path = "./themes/user/images/recurso_escort/imagen/noticias/thumbs/";
        if (count($arr) > 0) {
            foreach ($arr as $oNoticia) {
                $templateAux = $template;
                $templateAux = str_replace("{#ARG_PERFIL}", Util::encriptarUrl(array("id" => $oNoticia->getIdUsuario())), $templateAux);
                $templateAux = str_replace("{#IMG}", $path . $oNoticia->getSrc(), $templateAux);
                $templateAux = str_replace("{#FECHA}", Util::nicetime($oNoticia->getFecha()), $templateAux);
                $templateAux = str_replace("{#TITULO}", $oNoticia->getTitulo(), $templateAux);

                $mensaje = $oNoticia->getMensaje();
                if (strlen($mensaje) > 260) {
                    $mensaje = Util::recortarTexto(strip_tags($mensaje), 260);
                }
                $mensaje = Util::reemplazarTextoPorEmoticon($mensaje);
                $templateAux = str_replace("{#MENSAJE}", $mensaje, $templateAux);
                $templateAux = str_replace("{#ARG}", Util::encriptarUrl(array("id" => $oNoticia->getId())), $templateAux);

                $html .= $templateAux;
            }
        }
        
        $numeroPagina++;
        $arrResultado = array("status" => "OK",
            "noticias" => utf8_encode($html),
            "cantidadComentario" => $cantidadComentarios,
            "numeroPagina" => $numeroPagina);
        $arrResultado = json_encode($arrResultado);
        return $arrResultado;
    }

    private function obtenerConcursos() {
        $numeroPagina = $this->Request["numeroPagina"];

        $tamannoPagina = Util::CANTIDAD_REGISTROS_POR_PAGINA;
        $inicio = ($numeroPagina - 1) * $tamannoPagina;

        $oConcursoBLL = new ConcursoBLL();
        $arr = $oConcursoBLL->listarUltimasPaginacion($inicio, $tamannoPagina);
        $cantidadComentarios = count($arr);
        $template = "<li class='impar'>
                    <a href='index.php?page=Index.ViewUsuario&a={#ARG_PERFIL}'><img src='{#IMG}' width=100 hegth=100 /></a>
                    <div class='content'>
                        <div class='fechaComentario'><h5><a href='index.php?page=Index.Concurso&a={#ARG}'>{#TITULO}</a></h5><span> | <i class='icon-calendar icon-white'></i> {#FECHA}</span></div>
                        <p style='text-align: justify;'>{#MENSAJE}...</p>
                    </div>
                </li>";
        $templateAux = "";
        $html = "";
        $path = "./themes/user/images/recurso_escort/imagen/concursos/thumbs/";
        if (count($arr) > 0) {
            foreach ($arr as $oConcurso) {
                $templateAux = $template;
                $templateAux = str_replace("{#ARG_PERFIL}", Util::encriptarUrl(array("id" => $oConcurso->getIdUsuario())), $templateAux);
                $templateAux = str_replace("{#IMG}", $path . $oConcurso->getSrc(), $templateAux);
                $templateAux = str_replace("{#FECHA}", Util::nicetime($oConcurso->getFecha()), $templateAux);
                $templateAux = str_replace("{#TITULO}", $oConcurso->getTitulo(), $templateAux);

                $mensaje = $oConcurso->getMensaje();
                if (strlen($mensaje) > 260) {
                    $mensaje = Util::recortarTexto(strip_tags($mensaje), 260);
                }
                $mensaje = Util::reemplazarTextoPorEmoticon($mensaje);
                $templateAux = str_replace("{#MENSAJE}", $mensaje, $templateAux);
                $templateAux = str_replace("{#ARG}", Util::encriptarUrl(array("id" => $oConcurso->getId())), $templateAux);

                $html .= $templateAux;
            }
        }
        
        $numeroPagina++;
        $arrResultado = array("status" => "OK",
            "concursos" => utf8_encode($html),
            "cantidadComentario" => $cantidadComentarios,
            "numeroPagina" => $numeroPagina);
        $arrResultado = json_encode($arrResultado);
        return $arrResultado;
    }
    
}

?>
